home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / aminet / dev / lang / pcq12b.lzh / Include / Exec / Memory.i < prev    next >
Text File  |  1990-08-27  |  2KB  |  99 lines

  1. {
  2.     Memory.i for PCQ Pascal
  3. }
  4.  
  5. {$I "Include:Exec/Nodes.i"}
  6.  
  7. type
  8.  
  9. {***** MemChunk ***************************************************}
  10.  
  11.     MemChunk = record
  12.     mc_Next    : ^MemChunk;    { pointer to next chunk }
  13.     mc_Bytes : Integer;    { chunk byte size    }
  14.     end;
  15.     MemChunkPtr = ^MemChunk;
  16.  
  17. {***** MemHeader **************************************************}
  18.  
  19.     MemHeader  = record
  20.     mh_Node        : Node;
  21.     mh_Attributes    : Short;    { characteristics of this region }
  22.     mh_First    : MemChunkPtr;    { first free region        }
  23.     mh_Lower    : Address;    { lower memory bound        }
  24.     mh_Upper    : Address;    { upper memory bound+1        }
  25.     mh_Free        : Integer;    { total number of free bytes    }
  26.     end;
  27.     MemHeaderPtr = ^MemHeader;
  28.  
  29. {***** MemEntry ***************************************************}
  30.  
  31.     MemEntry = record
  32.     meu_ReqsAddr    : Integer;    { the AllocMem requirements or addr }
  33.     me_Length    : Integer;    { the length of this memory region }
  34.     end;
  35.     MemEntryPtr = ^MemEntry;
  36.  
  37. {***** MemList ****************************************************}
  38.  
  39.     MemList = record
  40.     ml_Node        : Node;
  41.     ml_NumEntries    : Short;    { number of entries in this struct }
  42.     ml_ME        : Array [0..0] of MemEntry; { the first entry    }
  43.     end;
  44.     MemListPtr = ^MemList;
  45.  
  46. {----- Memory Requirement Types ---------------------------}
  47.  
  48. const
  49.     MEMF_PUBLIC        = 1;
  50.     MEMF_CHIP        = 2;
  51.     MEMF_FAST        = 4;
  52.  
  53.     MEMF_CLEAR        = $10000;
  54.     MEMF_LARGEST    = $20000;
  55.  
  56.     MEM_BLOCKSIZE    = 8;
  57.     MEM_BLOCKMASK    = 7;
  58.  
  59.  
  60. Procedure AddMemList(size, attr, pri : Integer; base : Address; name : String);
  61.     External;
  62.  
  63. Function AllocAbs(bytesize : Integer; location : Address) : Address;
  64.     External;
  65.  
  66. Function Allocate(mem : MemHeaderPtr; bytesize : Integer) : Address;
  67.     External;
  68.  
  69. Function AllocEntry(mem : MemListPtr) : MemListPtr;
  70.     External;
  71.  
  72. Function AllocMem(bytesize : Integer; reqs : Integer) : Address;
  73.     External;
  74.  
  75. Function AvailMem(attr : Integer) : Integer;
  76.     External;
  77.  
  78. Procedure CopyMem(source, dest : Address; size : Integer);
  79.     External;
  80.  
  81. Procedure CopyMemQuick(source, dest : Address; size : Integer);
  82.     External;
  83.  
  84. Procedure Deallocate(header : MemHeaderPtr; block : Address; size : Integer);
  85.     External;
  86.  
  87. Procedure FreeEntry(memList : MemListPtr);
  88.     External;
  89.  
  90. Procedure FreeMem(memBlock : Address; size : Integer);
  91.     External;
  92.  
  93. Procedure InitStruct(table, memory : Address; size : Integer);
  94.     External;
  95.  
  96. Function TypeOfMem(mem : Address) : Integer;
  97.     External;
  98.  
  99.